// 字面量
// 1 2 44 'hjdf' 'kkk' true
// 变量
let a = "10";
// 字面量
let b: 12;

// 字面量的运用
// 逻辑运算符：&& || ！

let c: 0 | 1 | 2;
c = 0;
c = 1;
c = 2;

// 类型：number boolean string undefined null

// 任意类型 any 显性写法
// let d:any = true;
// any 隐性写法
// 如果给变量定义类型是any 相当于关闭了ts的校验
let d;
d = 0;
d = "hello";

// unknown 未知类型 显性写法
let e: unknown;
e = 98;
e = true;
e = "99";
 e = d;
 d = e;
/**
 * unknown 与 any
 * any 可以给任意类型进行赋值
 * unknown 不可以给任意类型进行赋值 但是可以给any进行赋值
 */
let f: string;
f = "20";
// d = f;
// e = f;
if (typeof f === "string") {
  f = d;
  console.log("走进来");
}

// 类型断言 告知浏览器究竟是什么类型
f = <string>d;
f = d as string;

// void 用来表示空的类型
function fn1():void {
    // return "你好"
    console.log("新")
}
fn1();
// console.log(fn1())

// never 用来表示永远不返回的类型 不允许反出结果
function fn2():never {
    // 11
    throw new Error("我是error")
}
fn2()

export {};